package com.yf.zzmusic.utils;

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;


//导入可选配置类
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;


// 导入对应SMS模块的client
import com.tencentcloudapi.sms.v20210111.SmsClient;


// 导入要请求接口对应的request response类
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;



public class SendSms {
  public static SendSmsResponse sendMessage(String phone,Integer code){
    if (phone==null){
      return null;
    }
    /** 必要步骤：
     * 实例化一个认证对象，入参需要传入腾讯云账户密钥对secretId，secretKey。
     * 这里采用的是从环境变量读取的方式，需要在环境变量中先设置这两个值。
     * 您也可以直接在代码中写死密钥对，但是小心不要将代码复制、上传或者分享给他人，
     * 以免泄露密钥对危及您的财产安全。
     * SecretId、SecretKey 查询: https://console.cloud.tencent.com/cam/capi */
    Credential cred = new Credential("AKIDkeYOA1phYTXm6IQVXXQPI0ZzKjDf7fAZ", "X8gBf5c6A6y3qnmgmrusdM5uty0BA2kK");
    // 实例化一个http选项，可选，没有特殊需求可以跳过
    HttpProfile httpProfile = new HttpProfile();
    // 设置代理（无需要直接忽略）
    // httpProfile.setProxyHost("真实代理ip");
    // httpProfile.setProxyPort(真实代理端口);
    /* SDK默认使用POST方法。
     * 如果您一定要使用GET方法，可以在这里设置。GET方法无法处理一些较大的请求 */
    httpProfile.setReqMethod("POST");
    /* SDK有默认的超时时间，非必要请不要进行调整
     * 如有需要请在代码中查阅以获取最新的默认值 */
    httpProfile.setConnTimeout(60);
    /* 指定接入地域域名，默认就近地域接入域名为 sms.tencentcloudapi.com ，也支持指定地域域名访问，例如广州地域的域名为 sms.ap-guangzhou.tencentcloudapi.com */
    httpProfile.setEndpoint("sms.tencentcloudapi.com");

    /* 非必要步骤:
     * 实例化一个客户端配置对象，可以指定超时时间等配置 */
    ClientProfile clientProfile = new ClientProfile();
    /* SDK默认用TC3-HMAC-SHA256进行签名
     * 非必要请不要修改这个字段 */
    clientProfile.setSignMethod("HmacSHA256");
    clientProfile.setHttpProfile(httpProfile);
    /* 实例化要请求产品(以sms为例)的client对象
     * 第二个参数是地域信息，可以直接填写字符串ap-guangzhou，支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8 */
    SmsClient client = new SmsClient(cred, "ap-guangzhou",clientProfile);
    /* 实例化一个请求对象，根据调用的接口和实际情况，可以进一步设置请求参数
     * 您可以直接查询SDK源码确定接口有哪些属性可以设置
     * 属性可能是基本类型，也可能引用了另一个数据结构
     * 推荐使用IDE进行开发，可以方便的跳转查阅各个接口和数据结构的文档说明 */
    SendSmsRequest req = new SendSmsRequest();

    /* 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId，示例如1400006666 */
    // 应用 ID 可前往 [短信控制台](https://console.cloud.tencent.com/smsv2/app-manage) 查看
    String sdkAppId = "1400628340";
    req.setSmsSdkAppId(sdkAppId);

    /* 短信签名内容: 使用 UTF-8 编码，必须填写已审核通过的签名 */
    // 签名信息可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-sign) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-sign) 的签名管理查看
    String signName = "画艺技术站";
    req.setSignName(signName);

    /* 模板 ID: 必须填写已审核通过的模板 ID */
    // 模板 ID 可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-template) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-template) 的正文模板管理查看
    String templateId = "1295991";
    req.setTemplateId(templateId);

    String[] phoneNumberSet = {"+86"+phone};
    req.setPhoneNumberSet(phoneNumberSet);

    /* 模板参数: 若无模板参数，则设置为空 */
    String[] templateParamSet = {String.valueOf(code)};
    req.setTemplateParamSet(templateParamSet);
    SendSmsResponse res=null;
    try {
      res = client.SendSms(req);
    } catch (TencentCloudSDKException e) {
      e.printStackTrace();
    }
    return res;
  }
}
